Distortion of digital images using spatial offsets from image reference points

ABSTRACT

A method for distorting a digital image comprising receiving the coordinates of one or more than one image reference point defined by a user within the digital image, receiving one or more than one spatial offset assigned by the user and associated with the coordinates of the one or more than one defined image reference point, providing a mixing function algorithm embodied on a computer-readable medium for distorting the digital image, calculating an offset matrix by applying the mixing function algorithm based on the one or more than one spatial offset and the coordinates of the one or more than one defined image reference point; and distorting the digital image by application of the offset matrix. A graphic tag may be associated with each of the defined image reference points and displayed over the digital image, and the assignment of the spatial offset may be accomplished by movement of the graphic tag with the pointing device. Abstract image reference points may be used to limit distortion.

CROSS-REFERENCE TO RELATED APPLICATIONS

This Application is a continuation of U.S. patent application Ser. No.12/855,568, filed Aug. 12, 2010, now pending, which is a continuation ofU.S. patent application Ser. No. 12/577,453, filed Oct. 12, 2009, nowpending, which is a continuation of U.S. patent application Ser. No.11/279,958, filed Apr. 17, 2006, now U.S. Pat. No. 7,602,968 issued Oct.13, 2009, which is a continuation of U.S. patent application Ser. No.11/072,609, filed Mar. 3, 2005, now U.S. Pat. No. 7,031,547 issued Apr.18, 2006, which is a continuation of U.S. patent application Ser. No.10/824,664, filed Apr. 13, 2004, now U.S. Pat. No. 6,865,300 issued Mar.8, 2005, which is a divisional of U.S. patent application Ser.10/280,897, filed Oct. 24, 2002, now U.S. Pat. No. 6,728,421 issued Apr.27, 2004, which claims the benefit of U.S. Provisional PatentApplication No. 60/336,498, filed Oct. 24, 2001, now expired, thecontents of which are all incorporated herein by reference in theirentirety.

BACKGROUND

The present Application relates to distortion of a digital image usingspatial offsets from User Definable Image Reference Points. UserDefinable Image Reference Points are described in U.S. Pat. Nos.7,031,547; 6,865,300; and 6,728,421, the contents of which areincorporated by reference in this disclosure in their entirety.

It is a well-known problem to correct color, contrast, sharpness, orother specific digital image attributes in a digital image. It is alsowell-known to those skilled in image-editing that it is difficult toperform multiple color, contrast, and other adjustments whilemaintaining a natural appearance of the digital image.

At the current stage of image-editing technology, computer users canonly apply relatively basic functions to images in a single action, suchas increasing the saturation of all pixels of an image, removing acertain colorcast from the entire image, or increasing the image'soverall contrast. Well-known image-editing tools and techniques such aslayer masks can be combined with existing image adjustment functions toapply such image changes selectively. However, current methods for imageediting are still limited to one single image adjustment at a time. Morecomplex tools such as the Curves functions provided in image editingprograms such as Adobe Photoshop® provide the user with added controlfor changing image color, but such tools are difficult to apply, andstill very limited as they apply an image enhancement globally to theimage.

Additional image editing tools also exist for reading or measuring colorvalues in the digital image. In its current release, Adobe Photoshop®offers a feature that enables the user to place and move up to fourcolor reference points in an image. Such color reference points readproperties (limited to the color values) of the image area in which theyare placed. It is known to those skilled in the art that the onlypurpose of such color reference points is to display the associatedcolor values; there is no image operation associated with such referencepoints. The reference points utilized in image-editing software aremerely offered as a control tool for measuring an image's color valuesat a specific point within the image.

In other implementations of reference points used for measuring color inspecific image regions, image-editing applications such as AdobePhotoshop®, Corel Draw®, and Pictographics iCorrect 3.0®, allow the userto select a color in the image by clicking on a specific image pointduring a color enhancement and perform an operation on the specificcolor with which the selected point is associated. For example, theblack-point adjustment in Adobe Photoshop® allows the user to select acolor in the image and specify the selected color as black, instructingthe software to apply a uniform color operation to all pixels of theimage, so that the desired color is turned into black. This method isnot only available for black-point operations, but for pixels that areintended to be white, gray (neutral), skin tone, or sky, etc.

While each of these software applications provide methods for reading alimited number of colors and allow for one single operation which isapplied globally and uniformly to the image and which only applies oneuniform color cast change based on the read information, none of themethods currently used allow for the placement of one or more graphicalrepresentations of image reference points (IRPs) in the image that canread color or image information, be assigned an image editing function,be associated with one or more image reference points (IRPs) in theimage to perform image-editing functions, be moved, or be modified bythe user such that multiple related and unrelated operations can beperformed.

What is needed is a method to enable a user to easily attach IRPs to theimage and at the same time define how the user wants the image to bedistorted or altered.

SUMMARY

A method for distorting or alteration of a digital image is disclosedcomprising the steps of receiving the coordinates of one or more thanone image reference point defined by a user within the digital image;receiving one or more than one spatial offset assigned by the user andassociated with the coordinates of the one or more than one definedimage reference point; providing a mixing function algorithm embodied ona computer-readable medium for distorting the digital image; calculatingan offset matrix by applying the mixing function algorithm based on theone or more than one spatial offset and the coordinates of the one ormore than one defined image reference point; and distorting the digitalimage by application of the offset matrix.

The spatial offset may be assigned by the user by movement of a pointingdevice, such as a mouse. A graphic tag (30, 32, 34) may be associatedwith an image reference point and displayed over the digital image. Theassignment of the spatial offset may be accomplished by movement of thegraphic tag with the pointing device.

Abstract image reference points may be used for limiting distortion.

A method for distortion or alteration of a digital image is disclosedcomprising determining one or more sets of pixel characteristics,receiving for each pixel characteristic set, a spatial offset, providinga mixing function algorithm embodied on a computer-readable medium fordistorting the digital image, calculating an offset matrix by applyingthe mixing function algorithm based on the one or more sets of pixelcharacteristics and the received spatial offsets, and distorting thedigital image by application of the offset matrix.

A computer readable medium is provided having contents for causing acomputer-based information handling system to perform the steps of theinvention, thereby transforming the digital image.

BRIEF DESCRIPTION OF THE DRAWINGS

These and other features, aspects, and advantages of the presentinvention will become better understood with reference to the followingdescription, illustrations, equations, appended claims, and accompanyingdrawings where:

FIG. 1 is a screen shot of a digital image in an image processingprogram, illustrating one embodiment useable in the graphical userinterface of the present invention.

FIG. 2 is a screen shot of a digital image in an image processingprogram, illustrating another embodiment useable in the graphical userinterface of the present invention.

FIG. 3 is a flow chart of the steps of the application of a mixingfunction in accord with the disclosure.

FIG. 4 is an illustration of one embodiment of a dialog box useable inthe graphical user interface of the present invention.

FIG. 5 is an illustration of one embodiment of a dialog box implementingsimplified user control over weights useable in the graphical userinterface of the present invention.

DETAILED DESCRIPTION

The method and user interface of the present invention is useable as aplug-in supplemental program, as an independent module that may beintegrated into any commercially available image processing program suchas Adobe Photoshop®, or into any image processing device that is capableof modifying and displaying an image, such as a color copier or a selfservice photo print kiosk, as a dynamic library file or similar modulethat may be implemented into other software programs whereby imagemeasurement and modification may be useful, or as a stand alone softwareprogram. These are all examples, without limitation, of image processingof a digital image. Although embodiments of the invention which adjustcolor, contrast, noise reduction, and sharpening are described, thepresent invention is useful for altering any attribute or feature of thedigital image.

Furthermore, it will become clear with regard to the current inventionthat the user interface for the current invention may have variousembodiments, which will become clear later in this disclosure.

The Graphical User Interface

The user interface component of the present invention provides methodsfor setting IRPs in an image. Those skilled in the art will find thatmultiple methods or implementations of a user interface are useful withregard to the current invention.

In one preferred embodiment of a user interface, an implementation ofthe present invention allows the user to set a variety of types of IRPsin an image, which can be shown as graphic tags 10 floating over theimage, as shown in FIG. 1. FIG. 1 is a screen shot of a digital image inan image processing program.

This method enables the user to move the IRPs in the image for thepurpose of adjusting the location of such IRPs and thus the effect ofeach IRP on the image.

In another preferred embodiment, IRPs could be invisible within thepreview area of the image and identified placed elsewhere as informationboxes 12 within the interface, as shown in FIG. 2, but associated with alocation (shown by arrow). In this embodiment of the user interface,graphic tags 10 do not “float” over the image as in FIG. 1. However, asit will become clear later in this disclosure that it is the locationthat Image Reference Points [IRPs] identifies and the related functionthat are significant, and that the graphical representations of the IRPsare useful as a convenience to the user to indicate the location of theIRP function. (FIG. 2 is a screen shot of a digital image in an imageprocessing program).

In both FIG. 1 and FIG. 2, the IRPs serve as a graphical representationof an image modification that will be applied to an area of the image.

The graphical user interface is embodied on a computer-readable mediumfor execution on a computer for image processing of a digital image. Afirst interface receives the coordinates of each of a plurality of imagereference points defined by a user within the digital image, and asecond interface receives an image editing function assigned by the userand associated with either the coordinates of each of the plurality ofdefined image reference points, or the image characteristics of one ormore pixels neighboring the coordinates of each of the plurality ofdefined image reference points.

In a further embodiment, the second interface receives an image editingfunction assigned by the user and associated with both the coordinatesof each of the plurality of defined image reference points, and theimage characteristics of one or more pixels neighboring the coordinatesof each of the plurality of defined image reference points.

In a further alternative optional embodiment, a third interface displaysa graphical icon or graphical tag 10 at the coordinates of one or morethan one of the plurality of defined image reference points.Additionally optionally, the third interface permits repositioning ofthe graphical icon.

In further embodiments, a fourth interface displays the assigned imageediting function. The second interface may further receive an image areaassociated with the coordinates of one or more than one of the pluralityof defined image reference points. The second interface may furtherreceive a color area associated with the coordinates of one or more thanone of the plurality of defined image reference points.

In an alternative embodiment, the first interface receives thecoordinates of a single image reference point defined by a user withinthe digital image, and the second interface receives an image editingfunction assigned by the user and associated with both the coordinatesof the defined image reference point, and the image characteristics ofone or more pixels neighboring the coordinates of the defined imagereference point. Mixing Functions

A central function of the present invention is the “Mixing Function,”which modifies the image based on the values and settings of the IRPsand the image modifications associated with the IRPs. With reference tothis disclosure, a “Mixing Function” is an algorithm that defines towhat extent a pixel is modified by each of the IRPs and its relatedimage modification function.

It will be evident to those skilled in the art that there are manypossible mixing functions, as will be shown in this disclosure.

The method for applying the mixing function is shown in FIG. 3. Beginwith receiving 14 the IRPs in the image; test 16 to determine whetherabstract IRPs are being used. If so, load 18 the abstract IRPs and thenselect 20 the first pixel to be processed; if not select 20 the firstpixel to be processed. Then apply 22 the mixing function according tothis disclosure, and test 24 whether all pixels chosen to be processedhave been processed. If so, the method is completed 26, if not, the nextpixel is selected 28 and step 22 is repeated. Using the PythagorasDistance Approach

In one embodiment of the mixing function, the Pythagoras equation can beused. Those skilled in the art will find that this is more suitable forIRPs that are intended to perform local color correction or similarchanges to an image.

In step 22, apply the image modification to a greater extent, if thelocation of the IRP is close to that of the current pixel, or apply itto a lesser extent, if the location of the IRP is further away from thecurrent pixel, using the Pythagoras equation to measure the distance,often also referred to as distance in Euclidian space.

Using Color Curves

In another embodiment, a mixing function could be created with the useof color curves. To create the function:

Step 22.1.1. Begin with the first channel of the image (such as the Redchannel).

Step 22.1.2. All IRPs will have an existing brightness which is thebrightness of the actual channel of the pixel where the IRP is located,and a desired brightness, which is the brightness of the actual channelof the same pixel after the image modification associated with its IRPhas been applied. Find the optimal polynomial function that matchesthese values. For example, if the red channel has an IRP on a pixel witha value of 20, which changes the pixel's value to 5, and there is asecond IRP above a pixel with the value of 80, which changes thatchannel luminosity to 90, all that is needed is to find a function thatmeets the conditions f(20)=5 and f(80)=90.

Step 22.1.3. Apply this function to all pixels of the selected channel.

Step 22.1.4. If all channels have not been modified, select the nextchannel and proceed with step 22.1.2.

Using Segmentation to Create the Mixing Function

In a further embodiment, the mixing function can be created usingsegmentation. To create the function:

Step 22.2.1. Segment the image using any appropriate segmentationalgorithm.

Step 22.2.2. Begin with IRP 1.

Step 22.2.3. Apply the filter associated with that IRP to the segmentwhere it is located.

Step 22.2.4. Select the next IRP.

Step 22.2.5. Unless all IRPs have been processed, proceed with step22.2.3.

If there is a segment that contains two IRPs, re-segment the image withsmaller segments, or re-segment the area into smaller segments.

Using Multiple Segmentations

In a still further embodiment of the current invention, the mixingfunction can be created using multiple segmentation. To create thefunction:

Step 22.3.1. Make “n” different segmentations of the image, e.g., n=4,where the first segmentation is rougher, (having few but largersegments), and the following segmentations are finer, (using more bysmaller segments per image).

Step 22.3.2. Begin with IRP 1.

Step 22.3.3. Apply the image modification of that IRP at 1/nth opacityto all pixels in the segment that contains the current IRP of the firstsegmentation, then apply the image modification at 1/nth opacity to allpixels in the segment containing the IRP of the second segmentation.Continue for all n segmentations.

Step 22.3.4. Select the next IRP.

Step 22.3.5. Unless all IRPs have been processed, proceed with step22.3.3.

Those skilled in the art will know that several segmenting algorithmsmay be used, and the “roughness” (size of segments) within the equationcan be defined by a parameter.

Using a Classification Method

A classification method from pattern recognition science may be used tocreate another embodiment of the mixing function. To create thefunction:

Step 22.4.1. Choose a set of characteristics, such as saturation,x-coordinate, y-coordinate, hue, and luminance.

Step 22.4.2. Using existing methods of pattern recognition, classify allpixels of the image, i.e., every pixel is assigned to an IRP based onthe characteristics, and assuming that the IRPs are centers of clusters.

Step 22.4.3. Modify each pixel with the image modification associatedwith the IRP to which the pixel has been classified.

Using a “Soft” Classification Method

In an even further embodiment of the current invention, it may be usefulto modify the classification method to adjust for similarity of pixelattributes.

Typically, a pixel will not match the attributes of one IRP to a degreeof 100%. One pixel's attributes might, for example, match one IRP to50%, another IRP to 30% and a third IRP only to 20%. In the currentembodiment using soft classification, the algorithm would apply theeffect of the first IRP to a degree of 50%, the second IRP' s effect at30%, and the third IRP' s effect to 20%. By utilizing this “Soft”Classification, one pixel is not purely associated with the most similarIRP.

One preferred embodiment that is described in detail later in thisdisclosure will show an implementation that follows a similar concept asdescribed here.

Using an Expanding Areas Method

In another embodiment of the mixing function, an expanding areas methodcould be used to create a mixing function. To create the function:

Step 22.5.1. Associate each IRP with an “area” or location within theimage. Initially, this area is only the pixel where the IRP ispositioned.

Step 22.5.2. Apply the following to all IRP areas: Consider all pixelsthat touch the area. Among those, find the one whose attributes (color,saturation, luminosity) are closest to the initial pixel of the area.While comparing the attributes, minimize for the sum of differences ofall attributes. Add this pixel to the area and assign the current areasize in pixels to it. The initial pixel is assigned with a value of 1,the next added pixel is assigned a value of 2, the next with a value of3, etc., until each pixel has been assigned a value.

Step 22.5.3. Repeat step 22.5.2 until all areas have expanded to thefull image size.

Step 22.5.4. Apply all modifications of all IRPs to that pixel whileincreasing the application for those with smaller values.

One Preferred Mixing Function

In one preferred embodiment, a mixing function uses a set of attributesfor each pixel (luminosity, hue, etc.). These attributes are compared tothe attributes of the area where an IRP is positioned, and the MixingFunction applies those IRPs image modifications more whose associatedattributes are similar to the actual pixel, and those IRPs imagemodifications less whose associated characteristics are very differentfrom the actual pixel.

Unless otherwise specified, capitalized variables will represent largestructures (such as the image I) or functions, while non-capitalizedvariables refer to one-dimensional, real numbers.

Definition of the Key Elements

A “Pixel-Difference-Based IRP Image Modification,” from now on called an“IRP Image Modification,” may be represented by a 7-tuple, as shown inEquation 1, where m is the amount of IRPs that will be made use of, andthe number n is the amount of analyzing functions as explained later.

(F_(1. . . m), R_(1. . . m), I, A_(1 . . . n), D, V ,C_(1 . . . m))  [1]

The first value, F₁ is a set of the “Performing Functions.” Each ofthese functions is an image modification function, which may be calledwith three parameters as shown in Equation 2.

I _(xy) ′=F(I, x, y)  [2]

In Equation 2 the result I_(xy)′ is the pixel that has been calculatedby F. I is the image on which F is applied, and x and y are thecoordinates of the pixel in I that F is applied to. Such a performingfunction could be “darken pixels by 30%,” for example, as shown inFIG. 1. In image science, these modifications are often called filters.

The second value in Equation 1, R_(1 . . . m) is a number of m tuples.Each tuple represents values of an IRP, and is a set of pixelcharacteristics. Such a tuple R consists of 2*n+1 values, as in Equation[3].

((g₁ . . . g_(n)), g*, (w₁ . . . w_(n)))  [3]

F₁ , and R , together represent the IRPs that the user has created. Iwill explain later how the IRPs that the user has placed can beconverted into the functions and values F_(1 . . . m) and R_(1 . . . m).Later in this disclosure I indicate that a function F and a tuple R are“associated” with each other and with an IRP if they F and R togetherrepresent an IRP.

The third value I in Equation 1 is the image with the pixels I_(xy).This image can be of any type, i.e., grayscale, Lab, CMYK, RGB, or anyother image representation that allows Performing Functions (Equation[2]) or analyzing functions (Equation [4]) to be performed on the image.

The fourth element A_(1 . . . n) in Equation 1 is a set of n “AnalyzingFunctions” as represented in Equation [4].

A _(n)(I, x, y)=k  [4]

These functions, unlike the Performing Functions F, calculate a singlereal number k for each pixel. These functions extract comparableattributes out of the image, such as saturation, luminance, horizontallocation or vertical location, amount of noise in the region around thecoordinates x, y, and so forth. The number n is the amount of AnalyzingFunctions.

The function's results need to be comparable. That is, the difference ofthe results of two different pixels applied to the same AnalyzingFunction can be represented by a number. For example, if p₁ is a darkpixel and p₂ is a bright pixel, and A is a function that calculates theluminance of a pixel, then |A(p₁)−A(p₂)| is an easy measure for theluminosity difference of both pixels. Note: Analyzing Functions in thisdisclosure refer to functions that calculate characteristics of animage, and must not be confused with the mathematical term “analyticfunctions.” The result of an Analyzing Function applied to a pixel willfor further reference in this disclosure be called a “Characteristic” ofthe pixel.

The Analyzing Functions can analyze the color of a point x, y in theimage I, the structure of the point x, y in the image I, and thelocation of a point x, y in the image I itself.

Later in this disclosure I refer to “Color Analyzing Functions,”“Structure Analyzing Functions” and “Location Analyzing Functions.”Color Analyzing Functions are any functions on the pixel's valuesitself, such as r, g and b, while Structure Analyzing Functions alsotake the values and differences of a group of pixel around the point x,y into account, and Location Analyzing Functions are any functions on xand y.

For example, the Analyzing Function A(I, x, y)=x+y is a LocationAnalyzing Function of the pixel. An example of a Color AnalyzingFunction would be A(I, x, y)=I_(xy(r))+I_(xy(g))+I_(xy(b)), where r, gand b refer to the RGB channels of the image. An example of a StructureAnalyzing Function would be A(I, x, y)=I)=I_(xy(r))−I_((x+1)y(r)). Note:These three categories of Analyzing Functions are not disjoint. Forexample, the function A(I,x,y)=I_(xy(r))−I_((x+1)(y−2)(g))+x is a ColorAnalyzing Function, a Structure Analyzing Function, and a LocationAnalyzing Function simultaneously.

“Normalizing” the Analyzing Functions and limiting the range of possiblevalues such that their results have approximately the range of 0 . . .100 will simplify the process.

The fifth element D in Equation 1 is a “Difference Function” which cancompare two vectors of n values against each other and provides a singlenumber that is larger the more the two vectors of n values differ andzero if the two sets of n numbers are identical. In doing so, thefunction D is capable of weighing each individual number of the two setswith a weight vector (w_(1 . . . n)) as in Equation [5].

d=D((a _(1 . . . n)),(b_(1 . . . n)),(w_(1 . . . n)))  [5]

D is defined as follows:

D((a _(1 . . . n),(b _(1 . . . n)),(w _(1 . . . n)))=∥(a ₁ *w ₁ −b ₁ *w₁), . . . , (a _(n) *w _(n) −b _(n) *w _(n))∥  [6]

where ∥•∥ refers to any norm, such as the distance in Euclidian space,which is also known as ∥•∥₂.

In other words, the more a_(1 . . . n) and b_(1 . . . n) differ, thehigher the result of the Difference Function D, while the weightsw_(1 . . . n), control the importance of each element of the vectors ofa and b. By setting elements of w to zero, D will disregard theaccording elements of a and b.

Suitable Difference Functions in this implementation are:

D((a _(1 . . . n)), (b _(1. . . n)), (w _(1 . . . n)))=|a ₁ −b ₁|*w ₂ +. . . +|a _(n) _(n) −b _(n) |*w _(n)  [7]

D((a _(1 . . . n)), (b _(1. . . n)), (w _(1 . . . n)))²=(a ₁ *w ₁ −b ₁*w ₁)²+ . . . +(a _(n) *w _(n) −b _(n) *w _(n))²  [8]

The weighed Pythagoras function [8] leads to better results than thesimple function [7], while function [8] provides for acceleratedprocessing. To those skilled in the art, the norms used in [7] and [8]may also be known as ∥•∥₁ and ∥•∥₂.

A function D* that is derived from the function D is defined as follows:

D*((a _(1 . . . n)), (b _(1 . . . n)), (w _(1 . . . n)), g*)=D((a_(1 . . . n)), (b _(1 . . . n)), (w _(1 . . . n)))+g*  [9]

In other words: D* measures the difference of a_(1 . . . n) andb_(1 . . . n), weighed with w_(1 . . . n), and adds the real number g*to the result.

For accelerated performance or for simpler implementation, anotherDifference Function D or D* can be made use of which does not utilizeweights. Systems as described in this disclosure that do not utilizeweights are easier to use and faster to compute, but less flexible. Dand D* are defined as follows:

D ((a _(1 . . . n)), (b _(1 . . . n)))=D((a _(1 . . . n)), (b_(1 . . . n)), (1,1, . . . ,1))  [10]

D *((a _(1 . . . n)), (b _(1 . . . n)), g*)=D*((a _(1 . . . n)), (b_(1 . . . n)), (1,1, . . . ,1), g*)  [11]

The sixth element, V, in Equation 1 is an “Inversion Function” that hasthe following characteristics with V:□₀ ⁺→□⁺:

V(x)>0 for all x≧0

V(y)<V(x) for all x<y for all x, y>0

lim x→∞ of V(x)=0.

The Gaussian bell curve or V(x)=1/(x+0.001) are such functions. Note:V(x) =1/x is not appropriate as the result of V(0) would not be defined.

In one preferred embodiment, the function in Equation [12] is used,where t is any number that is approximately between 1 and 1000. Thevalue t=50 is a good value to start with, if the Analyzing Functions arenormalized to a range of 0 . . . 100 as referred to in the section on“Normalizing Analyzing Functions” that follows equation [4] in thisdisclosure.

V(x)=0.5^((x/t))  [12]

The Inversion function will be used later in this disclosure tocalculate an “Inverse Difference” between two tuples a_(1 . . . n) andb_(1 . . . n) by calculating V(D*((a_(1 . . . n)), (b_(1 . . . n)),(w_(1 . . . n)), g*)) or V(D((a_(1 . . . n)), (b_(1 . . . n)),(w_(1 . . . n)))) or V( D*((a_(1 . . . n)), (b_(1 . . . n)), g*)) or V(D((a_(1 . . . n)), (b_(1 . . . n)))). The purpose of this InverseDifference is to provide a high value if similarity between the tuplesa_(1 . . . n), and b_(1 . . . n) is detected, and a low value, if thetuples a_(1 . . . n), and b_(1 . . . n) are different.

The seventh element, C_(1 . . . m), in equation [1] is a set of m“Controlling Functions”. Each of those Controlling Functions has mparameters and needs to suit the following conditions:

-   -   C_(i)(p₁ . . . p_(m))≧0 for all p₁ . . . p_(m) and for all 1≦i≦m        (all will never be negative).    -   C_(i)(p₁ . . . p_(m)) is high if p_(i) has a high value compared        to the mean of p₁ . . . p_(m)    -   C_(i)(p₁ . . . p_(m)) is low if p_(i) has a low value compared        to the mean of p₁ . . . p_(m)    -   C₁+C₂+ . . . +C_(m) is always 1.    -   C_(i)(p₁ . . . p_(m))=C_(Π(i))(p_(Π(1)) . . . p_(Π(m))) with Π        being any permutation Π:(1 . . . m)→(Π(1) . . . Π(m)).

A recommended equation for such a controlling function would be as shownin Equation [13].

C _(i)(p ₁ . . . p _(m))=p _(i)/(p ₁ +p ₂ +. . . +p _(m))  [13]

The purpose of a controlling function C, is to provide a large number(close to 1) if the i^(th) element of the parameters p₁ . . . p_(m) ishigh relative to the other parameters, and a small value (close to 0) ifthe i^(th) element of the parameters p₁ . . . p_(m) is relatively low,and to “down-scale” a tuple of m elements so that their sum is 1.0,while the relations between the elements of the m-tuple are constrained.If the Controlling Functions are applied to a set of m InverseDifferences, the m results of the Controlling Functions will be referredto as “Controlled Inverse Differences” later in this disclosure.

Setting the Elements F, R and A

The following section describes the manner in which the user-defined (orotherwise defined) m IRPs can be converted into its associatedPerforming Functions F and tuples R.

Note: In contrary to F and R, the last four elements of the tuple (A, D,V, C) are functions that are defined by the programmer when a systemusing IRPs is created, and are predefined or only slightly adjustable bythe user. However, to a certain extent, a system may give the usercontrol over the functions A, D, V and C; and there can be certaincomponents of the first two elements F_(1 . . . m), and R_(1 . . . m)that will be set by the application without user influence. This willbecome clearer later in this disclosure.

FIG. 4 provides a sample image of an image in a dialog box an imageprocessing program, for the purposes of illustrating modifications to animage using the current invention. For example, graphic tag 30representing IRP R₁ in FIG. 4, placed on the left apple, will be toincrease saturation, graphic tag 32 representing IRP R₂, placed on theright apple, will be decrease saturation, and graphic tag 34representing IRP R₃, placed on the sky, will darken its associated imagecomponent.

To do so, three performing functions F₁ . . . F₃ are necessary, where F₁increases the saturation, F₂ decreases the saturation, and F₃ is animage darkening image modification.

The system should typically allow the user to set such a PerformingFunction before or after the user places an IRP in the image. In suchcases, the user first defines the type of the performing function (suchas “sharpen,” or “darken,” or “increase saturation,” etc.) and then theuser defines the behavior of the function (such as “sharpen to 100%,” or“darken by 30 levels,” etc.).

In the current example, three tuples R ₁ . . . R₃ are necessary. Foreach IRP, there is always one tuple R and one Performing Function F. Itis not necessary, however, that all Performing Functions are different.As previously disclosed, IRPs in the current invention are used to storeCharacteristics of an individual pixel or a particular area in an image.As such, using the current example of modifying FIG. 4, three IRPs arenecessary: an IRP that stores the Characteristics of the first apple, anIRP that stores the Characteristics of the second apple, and an IRP thatstores the Characteristics for the sky.

This can typically be done by reading the Characteristics of the imagelocation where the user has placed an IRP. If a user has placed an IRPon the image coordinate location x, y in the image I, the values ofR=((g₁ . . . g_(n)), g*, (w₁ . . . w_(n))) can be calculated as follows:

g ₁ . . . g _(n) =A ₁(I,x,y) . . . A _(n)(I,x,y)  [14]

g*=0

w₁ . . . w_(n)=default value, for example, 1.

The user may have control over the values of R after they were initiallyfilled. This control may be allowed to varying extents, such as weightsonly versus all variables.

In our example the two red apples will be modified differently.Presumably, both apples have the same color and the same structure, andeach only differs in its location. The sky, containing the third IRP,has a different location than the apples, and also a different color.

As we now see that both location and color are relevant fordifferentiating between the three relevant image areas, it will beobvious that what is needed is at least one or more Location AnalyzingFunctions and one or more Color Analyzing Functions. In cases where theapplication allows the user only to perform global color changes, itwould be sufficient to choose only Color Analyzing Functions.

Some Analyzing Functions are as follows, where I_(xy(r)) refers to thered channel's value of the image I at the location x,y and so forth.

A ₁(I,x,y)=x  [15a]

A ₂(I,x,y)=y  [15b]

A ₃(I,x,y)=I _(xy(r))  [15c]

A ₄(I,x,y)=I _(xy(g))  [15d]

A ₅(I,x,y)=I _(xy(b))  [15e]

A₁ and A₂ are Location Analyzing Functions and A₃ through A₅ are ColorAnalyzing Functions.

Note: A₃ through A₅, which only provide the red, green, and blue values,are suitable functions for a set of color-dependent analyticalfunctions. For even better performance it is recommended to derivefunctions that calculate luminosity, saturation, etc., independently.Using the channels of the image in Lab color mode is appropriate.However, the following Analyzing Functions are also examples ofappropriate Analyzing Functions, where the capitalized variables X, Y,R, G, B represent the maximum possible values for the coordinates or thecolor channels.

A ₁(I,x,y)=x*100/X  [16a]

A ₂(I,x,y)=y*100/Y  [16b]

A ₃(I,x,y)=(I _(xy(r)) +I _(xy(g)) +I _(xy(b)))*100/(R+G+B)  [16c]

A ₄(I,x,y)=100*(I _(xy(r)) −I _(xy(g)))/(R+G)+50  [16d]

A ₅(I,x,y)=100*(I _(xy(r)) −I _(xy(b)))/(R+B)+50  [16e]

Equations [16] shows Analyzing Functions that are also normalized to arange of 0 . . . 100 (see the description for normalizing AnalyzingFunctions after equation [4]) Normalizing the Analyzing Functions aidsin the implementation, as normalized Analyzing Functions have theadvantage that their results always have the same range, regardless ofthe image size or other image characteristics. The Analyzing Functionsfound in Equations [15] will be used throughout this disclosure whendiscussing values from R_(1 . . . m),

Note: It may not be useful to adjust the set of Analyzing Functions fromimage to image. It may be preferable to use one set of AnalyzingFunctions that is suitable for many or all image types. When the currentinvention is used for standard color enhancements, the AnalyzingFunctions of Equations [16] are good to start with.

A Closer Look at IRPs

As previously discussed in this disclosure, the tuples R of an IRP storethe information of the Characteristics of the region to which anoperation will be applied, the region of interest. These tuples Racquire the Characteristics typically by applying the n analyticalfunctions to the image location I_(xy) where the IRP was placed, as inequation [14].

In the current embodiment, the Difference Function D^(*) will comparethe values g₁ . . . g_(n) of each IRP to the results of the n AnalyzingFunctions for all pixels in the image, using the weights w₁ . . . w_(n).

For example, if the pixel in the middle of the left apple has thecoordinates (10, 100) and the RGB color 150, 50, 50 (red), then theAnalyzing Functions A₁ . . . A_(n) of this pixel will have the valuesA₁=10, A₂=100, A₃=150, A₄=50, A₅=50, therefore, the values g₁ . . .g_(n) will be set to (10, 10, 150, 50, 50).

g* is set to zero for this IRP.

The weights will control the significance of the individual elements ofg₁ . . . g₅. See Equations [6], [7] and [8]. For example, if the weightsw₁ . . . w₅ are set to (10,10,1,1,1), the location related information,gained through A₁ and A₂, will be more significant than the colorrelated information from A₃ through A₅. (This IRP would be more locationdependent than color dependent).

If, however, w₁ . . . w₅=(0,0,3,3,0) is set, only the red and greenchannels of the pixel information would be considered by the DifferenceFunction, and the IRP would not differentiate between the location of apixel or its blue channel. As previously mentioned, in FIG. 4 thelocation-dependent and color-dependent Characteristics play a role indifferentiating the apples from each other and from the sky. Therefore,we will use equal weights for all 5 characteristics.

Setting all weights all to 1, the first IRP would be:

R₁=(g1 . . . g5, g*, w1 . . . w5)=((10,100,150,50,50), 0, (1,1,1,1,1))

(the first apple at the coordinate 10,100 with the color 150,50,50)

The second and third IRP could have values such as

R₂=((190,100,150,50,50), 0, (1,1,1,1,1))

(the second apple at the coordinate 190,100 with the color 150,50,50)

R₃=((100,10,80,80,200), 0, (1,1,1,1,1)). (the sky at the coordinate100,10 with the color 80,80,200)

The Mixing Function

An abbreviation related to the Difference Function follows. The purposeof the Difference Function is to calculate a value that indicates how“different” a pixel in the image is from the Characteristics that acertain IRP is associated with.

The “Difference” between an IRP R=((g₁ . . . g_(n)), g*,(w₁ . . .w_(n))) and a pixel I_(xy) can be written as follows:

|R−I _(xy) |=D*((g ₁ . . . g _(n)), (A ₁(I,x,y), . . . , A _(n)(I,x,y)),(w ₁ , . . . , w _(n)), g*)  [17]

The Difference referred to in this embodiment is always the result ofthe Difference function, and should not be confused with the “spatial”distance between two pixels in an image.

If, for ease of implementation or for faster computing of the MixingFunction, the Difference Functions D, D or D* are used, the abbreviationwould be:

|R−I _(xy) |=D((g ₁ . . . g _(n)), (A ₁(I,x,y), . . . , A _(n)(I,x,y)),(w ₁ , . . . , w _(n)))  [18]

|R−I _(xy) |= D ((g ₁ . . . g _(n)), (A ₁(I,x,y), . . . , A_(n)(I,x,y)))  [19]

|R−I _(xy) |= D ^(*)((g ₁ . . . g _(n)), (A ₁(I,x,y), . . . , A_(n)(I,x,y)), g*)  [20]

Given the 7-tupel of an IRP based image modification (F_(1 . . . m),R_(1 . . . m), I, A_(1 . . . n), D, V, C) then the modified image I^(*)xy is as show in Equation [21].

$\begin{matrix}{I_{xy}^{*} = {\sum\limits_{i = 1}^{m}{{F_{i}\left( {I,x,y} \right)}*{C_{i}\left( {{V\left( {{R_{1} - I_{xy}}} \right)},\ldots \mspace{14mu},{V\left( {{R_{m} - I_{xy}}} \right)}} \right)}}}} & \lbrack 21\rbrack\end{matrix}$

Apply this equation to each pixel in the image I, to receive theprocessed image I^(*), where all Performing Functions were applied tothe image according to the IRPs that the user has set. This equationcompares the n Characteristics of each pixel x, y against all IRPs, andapplies those Performing Functions F_(i) to a greater extent to thepixel, whose IRPs have similar Characteristics, while the ControllingFunction ensures that the sum of all functions F_(i) does not exceedunwanted ranges.

In an even further preferred embodiment of the current invention,equation [22] would be used.

$\begin{matrix}{I_{xy}^{*} = {I_{xy} + {\sum\limits_{i = 1}^{m}{\Delta \; {F_{i}\left( {I,x,y} \right)}*{V\left( {{R_{i} - I_{xy}}} \right)}}}}} & \lbrack 22\rbrack\end{matrix}$

In contrast to equation [21], equation [22] requires that the InversionFunction V does not exceed values of approximately 1. The Gaussian Bellcurve V(x)=e^(−x) ² or 1/(x+1) or equation [12] could be such functions.The function ΔF expresses the difference between the original andmodified image (where=I′_(xy)=I_(xy)+ΔF(I, x, y) instead of I′_(xy)=F(I,x, y), see Equation 2).

When comparing Equation [21] and [22], the terms V(|R_(i)−Ixy|)represent the Inverse Difference of the currently processed tuple R_(i)and the pixel I_(xy). Only equation [21] uses Controlled InverseDifferences. If equation [21] is used, each pixel in the image will befiltered with a 100% mix of all Performing Functions, regardless if animage region contains a large or a small number of IRPs. The more IRPsthat are positioned in the image, the less effect an individual IRP willhave if Equation [21] is used. If Equation [22] is used, the IRPs willnot show this competitive nature. That is, each IRP will modify theimage to a certain extent regardless whether it is placed amidst manyother IRPs or not. Therefore, if Equation [22] is used, placing multipleIRPs in an image area will increase the total amount of imagemodification in this area.

Further Embodiments

In a further embodiment, the concept of “Abstract IRPs” can be used toenhance the performed image modification, or to change the behavior ofthe image modification.

Abstract IRPs are similar to other IRPs as they are pairs of aPerforming Function F and a set of values R. Both Abstract IRPs and IRPsmay be used together to modify an image. Abstract IRPs, however, are not“user defined” IRPs or IRPs that are placed in the image by the user.The function of an Abstract IRP can be to limit the local “effect” orintensity of an IRP. In this regard, Abstract IRPs are typically not“local”, i.e., they affect the entire image. Abstract IRPs can beimplemented in a manner that the user turns a user-controlled element onor off as illustrated later, so that the Abstract IRPs are not presentedas IRPs to the user, as shown in FIG. 4.

Note: The use of Abstract IRPs as disclosed below requires that equation[21] is implemented as the mixing function, and that the Differencefunction is implemented as shown in equation [17] or [20].

In FIG. 4 the user has positioned graphic tags 30, 32, and 34representing IRPs R₁ . . . R₃. Controls 36, 38, and 40 indicate a set ofthree possible user controls. When control 36 is used, the applicationwould use one additional pre-defined Abstract IRP in the imagemodification. Such pre-defined, Abstract IRPs could, for example, beIRPs R₄ through R₆ as described below.

When the check box in control 36 is enabled, Abstract IRP R₄, isutilized. Without the use of an Abstract IRP, when an image has an areasuch as the cactus 42 which is free of IRPs, this area will still befiltered by a 100% mix of the effects of all IRPs (see equation [19] andthe Controlling Function C). In the current image example, the cactus 42would be affected by a mix of the IRPs R₁ . . . R₃, although the userhas placed no IRP on the cactus.

To remedy this, Abstract IRP R₄ is utilized which makes use of the g*value. Note: g* is used as described below when the mixing function ofequation [21] is being implemented.

The Abstract IRP could have zero weights and a g* value greater thanzero, such as

R ₄=((0,0,0,0,0), 50, (0,0,0,0,0))

The Difference Function |R₄-I_(xy)| will return nothing but 50 whateverthe Characteristics of the pixel I_(xy) might be. The value of g* shouldbe in the range of 1 to 1000. 50 is a good value to start with.

The purpose of this IRP and its R₄ is that pixels in areas free of IRPs,such as in the middle of the cactus 42, will have a lower Difference toR₄ (which is constantly set to 50) than to R₁ . . . R₃. For pixels inimage areas where one or more IRPs are set, R₄ will not be the IRP withthe lowest Difference, as a different IRP will likely have a lowerDifference. In other words: areas free of non-Abstract IRPs arecontrolled predominantly by R₄, and areas that do contain non-AbstractIRPs will be affected to a lesser extent by R₄. If the PerformingFunction F₄ is set to a function that does not change the image(F₄(I,x,y)=Ixy), R₄ ensures that areas free of IRPs will remain mainlyunaffected.

In order to make Abstract IRP R₄ more effective (i.e., IRPs R₁ . . . R₃less effective), g^(*) can be lowered, and the value g^(*) in R₄ can beraised to make the “active” IRPs R₁ . . . R₃ more effective. A fixedvalue for g^(*) in R₄ may be implemented if the system that isprogrammed is designed for image retouchers with average skills forexample, and applications designed for advanced users may permit theuser to change the setting of g^(*).

In an even further embodiment of the current invention, Abstract IRPscould be used whereby an IRP has weights equaling zero for the locationdependent parameters, and values for g₁ . . . g_(n) which wouldrepresent either black or white, combined with a Performing Functionwhich does not affect the image.

Two of such Abstract IRPs one for black, one for white—would be suitableto ensure that black and white remain unaffected. Such Abstract IRPscould be:

R ₅=((0,0,255,255,255), 0, (0,0,1,1,1))

R ₆=((0,0,0,0,0), 0, (0,0,1,1,1))

As with R₄ and F₄, the Performing Functions F₅ and F₆ would also befunctions that do not perform any image modification, so the IRPs 5 and6 would ensure that colors such as black and white remain mainlyunaffected by the IRPs that the user places.

As shown in control 38 and control 40, these Abstract IRPs can beimplemented providing the user with the ability to turn checkboxes orsimilar user controls on or off. Such checkboxes control the specifiedfunction that the Abstract IRPs would have on the image. When theassociated checkbox is turned on, the application uses this Abstract IRPThis process is referred to as “load abstract IRPs” in step 18 of FIG.3.

It is not necessary that all Abstract IRPs are associated with aPerforming Function that leaves the image unaffected. If for instance animplementation is programmed that allows the user to sharpen the image,an abstract IRP such as R₄ above can be implemented, where theassociated Performing Function F4 sharpens the image to 50%. The usercould then place IRPs whose Performing Functions sharpen the image tofor instance to 0%, 25%, 75% or 100% in the image. This would mean thatthe image is sharpened to an individual extent where the user has setIRPs, and to 50% anywhere else.

In an even further embodiment, the IRP based image modification can beused in combination with a further, global image modificationI′_(xy)=M(I, x, y), where M is an image filter, combining the IRP basedimage modification and the uniform image modification M as shown inEquation [23].

$\begin{matrix}{I_{xy}^{*} = {M\left( {I_{xy} + {\sum\limits_{i = 1}^{m}{\Delta \; {F_{i}\left( {I,x,y} \right)}*{V\left( {{R_{i} - I_{xy}}} \right)}}}} \right)}} & \lbrack 23\rbrack\end{matrix}$

Equation [23] is derived from equation [21]. Equation [22] could also beutilized for this embodiment. The current embodiment is useful for avariety of image filter types M, especially those that lead to unwantedimage contrast when applied, causing what is known to those skilled inthe art as “blown-out areas” of a digital image. Such image filters Mcould be color to black and white conversions, increasing the overallcontrast, inverting the image, applying a strong stylistic effect, asolarization filter, or other strong image modifications.

Applying such an image modification such as a color to black and whiteconversion without the current invention, the user would first convertthe image to black and white, inspect areas of the resulting black andwhite image that are too dark or too bright, then undo the imagemodification, make changes to the original image to compensate for thefilter application, and then re-apply the image modification, until theresulting image no longer has the unwanted effects.

While implementing this filter in combination with an IRP based imagemodification as shown in Equation [23], the user can modify contrast andcolor of the image as the image modification M is applied, such as inthe example of the black and white conversion, thus accelerating themethod of application by the user for the black and white conversionprocess and providing improved results.

Offset Vectors

In an even further embodiment, the Performing Functions F_(i) can bereplaced with “Offset Vectors” S=(Δx, Δy,)^(T) , where S_(1 . . . m) arethe m Offset Vectors associated with the m IRPs, and Δx and Δy are anyreal numbers. In this case, the user would define such an Offset Vectorof an IRP for instance by defining a direction and a length, or bydragging an IRP symbol with a mouse button different from the standardmouse button. The mixing function, for instance if derived from equation[21], would then be

$\begin{matrix}{S_{xy} = {\sum\limits_{i = 1}^{m}{S_{i}*{C_{i}\left( {{V\left( {{R_{1} - I_{xy}}} \right)},\ldots \mspace{14mu},{V\left( {{R_{m} - I_{xy}}} \right)}} \right)}}}} & \lbrack 24\rbrack\end{matrix}$

Of course, if this function is assembled of vectors of □², the result isa matrix S_(xy) of the same horizontal and vertical dimensions as theimage, whose elements are vectors with two elements. For furtherreference, I refer to this matrix as an “Offset Matrix”.

Using this implementation, the user can easily attach IRPs to regions inthe image and at the same time define in which directions the user wantsthese regions to be distorted or altered.

The result of the mixing function is an offset matrix that containsinformation relating to in which direction a pixel of the original imageI needs to be distorted to achieve the distorted image I^(d). Thebenefit of calculating the Offset Matrix this way is that the OffsetMatrix adapts to the features of the image, provided that the vectorsR_(1 . . . m) have weights other than zero for pixel luminosity,chrominance, and structure Characteristics. The image I^(d) can becalculated the following way:

-   -   (1) Reserve some memory space for I^(d), and flag all of its        pixels.    -   (2) Select the first coordinate (x,y) in I.    -   (3) Write the values (such as r,g,b) of the pixel I_(xy) into        the picture I^(d) at the location (x,y)+S_(xy), and un-flag the        pixel at that location in I^(d).    -   (4) Unless all pixels in I are considered, select next        coordinate (x,y) and proceed with step (3).    -   (5) Select first pixel in I^(d) that is still flagged.    -   (6) Assign the values (such as r,g,b) of the closest non-flagged        pixel to this pixel. If multiple non-flagged pixels are equally        close, select the values of that pixel that was created using        the lowest Offset Vector S_(xy).    -   (7) If flagged pixels are left, select next flagged pixel in        I^(d) and proceed with step (6).

In other words, copy each pixel from I into I^(d) while using theelements of the Offset Matrix S for offsetting that pixel. Those areasthat remain empty in I^(d) shall be filled with the pixel valuesneighbored to the empty area in I^(d), while values of pixels that weremoved to the least extent during the copy process shall be preferred.Further Embodiments

In a further embodiment, a plurality or IRPs can be saved and applied toone or more different images. In batch processing applications, thisplurality of IRPs can be stored and applied to multiple images. In suchan embodiment, it is important that IRPs whose weights forlocation-dependent characteristics are zero.

In a further embodiment, the user may be provided with simplifiedcontrol over the weights of an IRP by using a unified control element.In Equations [15] and Equations [16], five Characteristics are utilized,two of which are location dependent Characteristics sourcing fromLocation Analyzing Functions.

In creating such a unified control element, one control element controlsthese two weights. This unified control element could be labeled“location weight,” instead of the two elements “horizontal locationweight” and “vertical location weight.”

In a further embodiment, user control elements may be implemented thatdisplay different values for the weights as textual descriptions insteadof numbers, as such numbers are often confusing to users. Those skilledin the art will recognize that it may be confusing to users that lowvalues for weights lead to IRPs that have more influence on the image,and vice versa. Regarding weights for location-dependent Characteristics(such as w₁ and w₂ in the current example), the user could be allowed tochoose one out of five pre-defined weights for textual descriptions ofdifferent values for the location dependent weights w₁ and w₂ as show inTable 1.

TABLE 1 w₁ w₂ “global” 0 0 “almost global” 0.3 0.3 “default” 1 1 “local”3 3 “very local” 8 8

FIG. 5 illustrates how such simplified user control over weights may beimplemented in an image processing program.

In a further embodiment, the user control over weights could besimplified to such an extent that there are only two types of weightsfor IRPs that the user can choose from: “strong” that utilizes weightvectors such as (1,1,1,1,1) and “weak” that utilizes weight vectors suchas (3,3,3,3,3). Note: As mentioned before, large weights make the areathat an IRP has influence on smaller, and vice versa.

For example, the user may place IRPs in the sky with an associatedenhancement to increase the saturation of an area identified by one ormore IRPs. In the same image, the user may place additional IRPs with anassigned function to decrease contrast, identifying changes in contrastand the desired changes in contrast based on the location of eachindividual IRP. In a preferred embodiment, IRPs may include a functionthat weights the intensity of the image-editing function as indicated bythe user.

In a different implementation of the invention, IRPs could be placed toidentify a color globally across the image, and using an associatedcommand, increase the saturation of the identified color.

In a still further preferred embodiment, IRPs could be used to providevarying degrees of sharpening across a digital image. In such animplementation, multiple IRP's could be placed within specific imageregions or image characteristics, such as the eyes, the skin, and hairof a portrait, and different sharpening intensities assigned to each IRPand applied to the digital image while considering the presence of colorand/or contrast and the relative difference of each IRP from one anotherto provide the desired image adjustment.

All features disclosed in the specification, including the claims,abstract, and drawings, and all the steps in any method or processdisclosed, may be combined in any combination, except combinations whereat least some of such features and/or steps are mutually exclusive. Eachfeature disclosed in the specification, including the claims, abstract,and drawings, can be replaced by alternative features serving the same,equivalent or similar purpose, unless expressly stated otherwise. Thus,unless expressly stated otherwise, each feature disclosed is one exampleonly of a generic series of equivalent or similar features.

This invention is not limited to particular hardware described herein,and any hardware presently existing or developed in the future thatpermits processing of digital images using the method disclosed can beused, including for example, a digital camera system.

A computer readable medium is provided having contents for causing acomputer-based information handling system to perform the stepsdescribed herein, and to display the graphical user interface disclosedherein.

The term memory block refers to any possible computer-related imagestorage structure known to those skilled in the art, including but notlimited to RAM, Processor Cache, Hard Drive, or combinations of those,including dynamic memory structures. Preferably, the methods andgraphical user interface disclosed will be embodied in a computerprogram (not shown) either by coding in a high level language, or bypreparing a filter which is complied and available as an adjunct to animage processing program. For example, in a preferred embodiment, themethods and graphical user interface is compiled into a plug-in filterthat can operate within third party image processing programs such asAdobe Photoshop®.

Any currently existing or future developed computer readable mediumsuitable for storing data can be used to store the programs embodyingthe afore-described interface, methods and algorithms, including, butnot limited to hard drives, floppy disks, digital tape, flash cards,compact discs, and DVDs. The computer readable medium can comprise morethan one device, such as two linked hard drives. This invention is notlimited to the particular hardware used herein, and any hardwarepresently existing or developed in the future that permits imageprocessing can be used.

Any currently existing or future developed computer readable mediumsuitable for storing data can be used, including, but not limited tohard drives, floppy disks, digital tape, flash cards, compact discs, andDVDs. The computer readable medium can comprise more than one device,such as two linked hard drives, in communication with the processor.

A method for image processing of a digital image has disclosedcomprising the steps of determining one or more sets of pixelcharacteristics; determining for each pixel characteristic set, an imageediting function; providing a mixing function algorithm embodied on acomputer-readable medium for modifying the digital image; and processingthe digital image by applying the mixing function algorithm based on theone or more pixel characteristic sets and determined image editingfunctions. In one embodiment, the mixing function algorithm comprises adifference function. Optionally, the difference function algorithmcalculates a value based on the difference of between pixelcharacteristics and one of the one or more determined pixelcharacteristic sets. In another embodiment, the mixing functionalgorithm includes a controlling function for normalizing thecalculations.

In a further embodiment, the method adds the step of determining foreach pixel characteristic set, a set of weighting values, and theprocessing step further comprises applying the mixing function algorithmbased on the determined weighting value set.

In a further embodiment, a first pixel characteristic set is determined,and at least one characteristic in the first pixel characteristic set islocation dependent, and at least one characteristic in the first pixelcharacteristic set is either color dependent, or structure dependent, orboth. Alternatively, a first pixel characteristic set is determined, andat least two different characteristics in the first pixel characteristicset are from the group consisting of location dependent, colordependent, and structure dependent.

A method for processing of a digital image has been disclosed,comprising the steps of receiving the coordinates of one or more thanone image reference point defined by a user within the digital image;receiving one or more than one image editing function assigned by theuser and associated with the coordinates of the one or more than onedefined image reference point; providing a mixing function algorithmembodied on a computer-readable medium for modifying the digital image;and processing the digital image by applying the mixing functionalgorithm based on the one or more than one assigned image editingfunction and the coordinates of the one or more than one defined imagereference point. The method may optionally further comprise displaying agraphical icon at the coordinates of a defined image reference point.

A mixing function algorithm suitable to the invention has beendescribed, and exemplar alternative embodiments are disclosed, includinga group consisting of a Pythagoras distance approach which calculates ageometric distance between each pixel of the digital image to thecoordinates of the one or more than one defined image reference point, acolor curves approach, a segmentation approach, a classificationapproach, an expanding areas approach, and an offset vector approach.Optionally, the segmentation approach comprises multiple segmentation,and additionally optionally the classification approach adjusts forsimilarity of pixel attributes. The mixing function algorithm mayoptionally operate as a function of the calculated geometric distancefrom each pixel of the digital image to the coordinates of the definedimage reference points.

Optionally, the disclosed method further comprises receiving one or moreassigned image characteristics associated with the coordinates of adefined image reference point, and wherein the mixing function algorithmcalculates a characteristic difference between the image characteristicsof a pixel of the digital image and the assigned image characteristics.The mixing function algorithm may also calculate a characteristicdifference between the image characteristics of a pixel and the imagecharacteristics of one or more pixels neighboring the coordinates of oneor more defined image reference point.

Additionally, optionally other steps may be added to the method. Forexample, the method may further comprise receiving one or more weightingvalues, and the processing step further comprising applying the mixingfunction algorithm based on weighting values; or further comprisereceiving one or more regions of interest associated with thecoordinates of one or more defined image reference point; or furthercomprise the step of providing an graphical user interface comprising afirst interface to receive the coordinates of the one or more definedimage reference points, and a second interface to receive the one ormore assigned image editing functions.

A method for processing of a digital image comprising pixels havingimage characteristics has been disclosed comprising the steps definingthe location of image reference points within the digital image;determining image editing functions; and processing the digital image byapplying the determined image editing functions based upon either thelocation of the defined image reference points, or the imagecharacteristics of the pixels at the location of the defined imagereference points, or both.

A method for image processing of a digital image has also been disclosedcomprising the steps of providing one or more than one image processingfilter; setting the coordinates of one or more than one image referencepoint within the digital image; providing a mixing function algorithmembodied on a computer-readable medium for modifying the digital image;and processing the digital image by applying the mixing algorithm basedon the one or more than one image processing filter and the coordinatesof the one or more than one set image reference point. Optionally,various filters may be used, including but not limited to a noisereduction filter, a sharpening filter, or a color change filter.

Also, any element in a claim that does not explicitly state “means for”performing a specified function or “step for” performing a specifiedfunction, should not be interpreted as a “means” or “step” clause asspecified in 35 U.S.C. §112.

Therefore, although the present invention has been discussed inconsiderable detail with reference to certain preferred embodiments,other embodiments are possible, and the scope of the appended claimsshould not be limited to the description of preferred embodimentscontained in this disclosure.

1. A method for applying enhancements to a digital image, the methodcomprising the steps of: a) providing an interface to display a previewof an image to the user; b) selecting at least one image referencepoint; c) overlaying a graphical mark over the displayed image for eachof the at least one image reference point; d) determining a numberrepresentative of an effect strength for a plurality of pixels in theimage for each of said graphical marks, said number representative of aneffect strength being calculated as a function of the pixel location andpixel color at the location of the graphical mark and the pixel locationand pixel color of each of the pixels of the plurality of pixels using amixing function; e) receiving parameters for one or more than one imagemodification functions; and f) selectively modifying the plurality ofpixels identified in step d) with the one or more than one imagemodification functions. 2-20. (canceled)